/* **********************************************************************************
*
* Copyright (c) Microsoft Corporation. All rights reserved.
*
* **********************************************************************************/

using System;
using System.Collections.Generic;
using System.Text;

namespace OfficeOpenXMLInterop
{
    #region Simple Types

    [Serializable]
    public enum ST_TextUnderlineType
    {
        none,
        words,
        sng,
        dbl,
        heavy,
        dotted,
        dottedHeavy,
        dash,
        dashHeavy,
        dashLong,
        dashLongHeavy,
        dotDash,
        dotDashHeavy,
        dotDotDash,
        dotDotDashHeavy,
        wavy,
        wavyHeavy,
        wavyDbl,
    }

    [Serializable]
    public enum ST_TextStrikeType
    {
        noStrike,
        sngStrike,
        dblStrike,
    }


    [Serializable]
    public enum ST_TextCapsType
    {
        none,
        small,
        all,
    }

    #endregion

    #region Complex Types

    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_TextUnderlineLineFollowText
    {
    }

    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_TextUnderlineFillFollowText
    {
    }

    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_TextUnderlineFillGroupWrapper
    {
        [System.Xml.Serialization.XmlElementAttribute("blipFill", typeof(CT_BlipFillProperties))]
        [System.Xml.Serialization.XmlElementAttribute("gradFill", typeof(CT_GradientFillProperties))]
        [System.Xml.Serialization.XmlElementAttribute("grpFill", typeof(CT_GroupFillProperties))]
        [System.Xml.Serialization.XmlElementAttribute("noFill", typeof(CT_NoFillProperties))]
        [System.Xml.Serialization.XmlElementAttribute("pattFill", typeof(CT_PatternFillProperties))]
        [System.Xml.Serialization.XmlElementAttribute("solidFill", typeof(CT_SolidColorFillProperties))]
        public object Item;
    }

    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_TextCharacterProperties
    {
        public CT_TextCharacterProperties()
        {
            this.dirty = true;
            this.err = false;
            this.smtClean = true;
            this.smtId = ((uint)(0));
        }

        public CT_LineProperties ln;
        public CT_NoFillProperties noFill;
        public CT_SolidColorFillProperties solidFill;
        public CT_GradientFillProperties gradFill;
        public CT_BlipFillProperties blipFill;
        public CT_PatternFillProperties pattFill;
        public CT_GroupFillProperties grpFill;
        public CT_EffectList effectLst;
        public CT_EffectContainer effectDag;
        public CT_Color highlight;
        public CT_TextUnderlineLineFollowText uLnTx;
        public CT_LineProperties uLn;
        public CT_TextUnderlineFillFollowText uFillTx;
        public CT_TextUnderlineFillGroupWrapper uFill;
        public CT_TextFont latin;
        public CT_TextFont ea;
        public CT_TextFont cs;
        public CT_TextFont sym;
        public CT_Hyperlink hlinkClick;
        public CT_Hyperlink hlinkMouseOver;
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public bool kumimoji;
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool kumimojiSpecified;
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string lang;
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string altLang;
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public int sz;
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool szSpecified;
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public bool b;
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool bSpecified;
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public bool i;
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool iSpecified;
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ST_TextUnderlineType u;
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool uSpecified;
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ST_TextStrikeType strike;
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool strikeSpecified;
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public int kern;
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool kernSpecified;
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public ST_TextCapsType cap;
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool capSpecified;
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public int spc;
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool spcSpecified;
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public bool normalizeH;
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool normalizeHSpecified;
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public int baseline;
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool baselineSpecified;
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public bool noProof;
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool noProofSpecified;
        [System.Xml.Serialization.XmlAttributeAttribute()]
        [System.ComponentModel.DefaultValueAttribute(true)]
        public bool dirty;
        [System.Xml.Serialization.XmlAttributeAttribute()]
        [System.ComponentModel.DefaultValueAttribute(false)]
        public bool err;
        [System.Xml.Serialization.XmlAttributeAttribute()]
        [System.ComponentModel.DefaultValueAttribute(true)]
        public bool smtClean;
        [System.Xml.Serialization.XmlAttributeAttribute()]
        [System.ComponentModel.DefaultValueAttribute(typeof(uint), "0")]
        public uint smtId;
    }

    [Serializable]
    [System.Xml.Serialization.XmlTypeAttribute(Namespace = Namespaces.DrawingMLMain)]
    public class CT_TextFont
    {
        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string typeface;

        // TODO: panose, pitchFamily, charset
    }

    #endregion
}
